<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Let</title>
</head>

<body>
  <script>
    // 声明变量
    let a;
    let b,c,d;
    let e = 100;
    let f = 521, g = 'iloveyou', h = [];

    // 1.变量不能重复声明
    // 报错：Uncaught SyntaxError: Identifier 'star' has already been declared

    // var 可以重复申明

    // let star = '罗志祥';
    // let star = '小猪';

    // 2.块级作用域   全局，  函数，  eval
    // if else  while for
    /* 
      {
        let girl = '周扬青';
      }
      console.log(girl) 

      报错：  Uncaught ReferenceError: girl is not defined  找不到变量的定义
    */

    {
      var girl = '周扬青';
    }
    console.log(girl);  // var 声明变量作用域 不受块级作用域影响

    // 3. 不存在变量提升
    /* 
      console.log(song);  // undefined
      var song = '恋爱达人'; 

      var 有变量提升
    */

    /* 
      console.log(song);  // undefined
      let song = '恋爱达人'; 
      
      报错：  let.html:48 Uncaught ReferenceError: Cannot access 'song' before initialization
    */

    // 4.  不影响作用域
    {
      let school = '尚硅谷';
      function fn() {
        console.log(school);
      }

      fn()
    }

    /* 
      var 声明的变量 是全局变量 并且也是一个全局对象的一个属性
      let 声明的变量 是全局变量 但不是一个全局对象的一个属性  全局变量和全局对象的关系被断开
    */

    var global = true
    console.log(window.global)

    let whole = true
    console.log(window.whole)

    /* var Math = true
    console.log(window.Math)    // true

    let Math = true
    console.log(window.Math, 23233223) */
  </script>
</body>

</html>